小编Ale*_*ire的帖子

C将stdout恢复到终端

我正在使用多线程程序.

首先,我将我的stdout重定向到某个文件.这里没有问题(我用的dup2(fd, 1)地方fd是该文件的文件描述符).

之后,我需要再次将我的标准输出重定向到终端.

我的第一个方法:

      /*Declaration*/
      fpost_t  stream_sdout;
      /*code*/
      if ( fgetpos( stdout, &stream_sdout) == -1 )
          perror(Error:);
Run Code Online (Sandbox Code Playgroud)

它说非法寻求.
不知道为什么会这样.
但是,如果我fsetpos(stdout, &stream_stdout)让它工作,那么我只需要使用它应该工作.

我的第二个想法是将stdout复制dup2(stdout, 4)到位置4的文件描述符表.但这也不起作用.

如何将标准输出切换回其原始目标(终端,管道,文件等)?

c stdout

20
推荐指数
2
解决办法
3万
查看次数

Shell脚本如果[-f ./file]

我正在学习shell脚本我自己,我正在调查如何做If,我不明白一个例子:

if [ -f ./$NAME.tar ]; then
    //do something
else
    //something else
Run Code Online (Sandbox Code Playgroud)

现在我做了一些实验,并给了NAME我目录中的文件名.当我在没有-f的情况下执行时,它正在进入else条件,但是使用-f它进入//做某事条件所以我假设-f是for file.它是否正确?我只是找不到确认这一点的信息.

shell

13
推荐指数
1
解决办法
5万
查看次数

Spark 截断 Spark 计划

我面临以下问题:打印执行计划时,我无法查看所有推送的过滤器。

执行的代码是

println(df.queryExecution.executedPlan.treeString(true))
Run Code Online (Sandbox Code Playgroud)

所有的计划都被打印出来,在Pushed filter字段中是这样的

 PushedFilters: [IsNotNull(X1), IsNotNull(X2), IsNotNull(X2), IsNotNull(X3..., ReadSchema: 
Run Code Online (Sandbox Code Playgroud)

您可能会注意到,它并没有完全打印出来。此外,为了解决这个问题,我修改了 spark-default.conf 中的以下属性

spark.debug.maxToStringFields    120000
Run Code Online (Sandbox Code Playgroud)

不幸的是,以前的并没有解决问题。

关于如何克服这个问题的任何建议?

scala apache-spark apache-spark-sql

8
推荐指数
2
解决办法
1387
查看次数

模拟模块中除一个函数之外的所有函数

我正在测试fileA.js,这需要fileB.js

在 中fileA.test.js,我希望模拟fileB.js除一个之外的所有方法。

fileA.test.js我有:

const common = require("../src/fileB");
jest.mock("../src/fileB");
Run Code Online (Sandbox Code Playgroud)

有一种方法我不想被嘲笑。这种事情在 nodeJS 中可能吗?

谢谢你。

javascript mocking node.js jestjs

6
推荐指数
1
解决办法
1799
查看次数

C在多线程程序中定义互斥锁的位置?

我正在研究一个多线程程序,并对如何定义互斥锁有疑问.

相关信息:程序具有main.c根据用户输入确定特定操作的位置.main调用master_function,它位于一个名为的文件中master.c.在master.c文件中,我们沿着一些其他操作(不相关)创建N个线程.线程调用名为son_threads的函数,该函数位于son.c文件中,当它们进入关键区域时需要使用互斥锁(编辑几个全局变量以防止竞争条件).我有另一个文件type.h,我定义了几个我需要使用的全局变量.

互斥的声明是:

  pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
Run Code Online (Sandbox Code Playgroud)

所以我试着在我的中定义互斥锁,type.h以便son.c文件可见.当我尝试编译时,它给了我错误.这是正确的,因为我在几个文件中定义了互斥锁.

但我很确定我无法在son.c文件中定义互斥锁,因为每次创建该线程时,互斥锁都会被初始化为默认设置,不允许我正确使用它.对此不确定.

互斥锁必须是一个全局变量,N个线程可以访问它.那么我应该放在哪里呢?

我不知道我是否正确地解释自己.尽我所能.

c unix multithreading mutex semaphore

5
推荐指数
1
解决办法
7944
查看次数

创建动态数量的线程

我想创建用户指定的一些线程.我为此编写的代码是:

int nhijos = atoi(argv[1]);

thread = malloc(sizeof(pthread_t)*nhijos);

for (i = 0; i < nhijos; i++){
  if (pthread_create ( &thread[i], NULL, &hilos_hijos, (void*) &info ) != 0){
  perror("Error al crear el hilo. \n");
  exit(EXIT_FAILURE);
}   
Run Code Online (Sandbox Code Playgroud)

它是否正确?

c multithreading pthreads

5
推荐指数
1
解决办法
1万
查看次数

C将列表作为参数传递

所以我将列表定义为全局变量:

typedef struct center {

  char center_name[100];

  char hostname[100];

  int port;

  struct center *next_center;

} center;
Run Code Online (Sandbox Code Playgroud)

我需要在列表中添加元素.但是我需要添加的这些元素位于文件中,因此:

 int main(int argc, char** argv) {
     center *head = NULL; 
     parse(argv, head);
  }
Run Code Online (Sandbox Code Playgroud)

parse是一个函数,它读取文件并将这些读取的元素添加到新的中心(所有这些都可以,它会被双重检查)

void parser (char** argv, center *head) {
   //read the elements i need to add
   //creates a newCenter and adds the elements read to the new center
   //this far it works
  addToCenter(newCenter, head); 
}
Run Code Online (Sandbox Code Playgroud)

哪里:

addToCenter(center *newCenter, center *head){
   //adds newCenter to the list
   if (head == null)
      head = …
Run Code Online (Sandbox Code Playgroud)

c reference list

5
推荐指数
1
解决办法
1216
查看次数

C了解valgrind,堆栈粉碎错误

我做了一个程序,有时它会抛出一堆粉碎检测到的错误.它可以在99%的时间内工作,但是对于某些文件,它会抛出错误.我使用valgrind来尝试识别错误,但我无法理解日志文件.所以这里是:

==3797== Memcheck, a memory error detector
==3797== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==3797== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==3797== Command: ./pargrep de nuevo.txt
==3797== Parent PID: 2367
==3797== 
==3797== 
==3797== HEAP SUMMARY:
==3797==     in use at exit: 33,339 bytes in 5 blocks
==3797==   total heap usage: 12 allocs, 7 frees, 35,025 bytes allocated
==3797== 
==3797== 4 bytes in 1 blocks are still reachable in loss record 1 of …
Run Code Online (Sandbox Code Playgroud)

c stack-overflow valgrind

4
推荐指数
2
解决办法
3973
查看次数

Scala Tuple选项

如果我有喜欢的Scala元组选项:

(Some(1), None)
(None, Some(1))
(None, None) 
Run Code Online (Sandbox Code Playgroud)

我希望总是提取"Some"值(如果存在),否则得到None.模式匹配的唯一方法是什么?

scala tuples option

4
推荐指数
1
解决办法
1045
查看次数

c 向线程传递几个参数

当我创建一个线程时,我想传递几个参数。所以我在头文件中定义了以下内容:

struct data{
  char *palabra;
  char *directorio;
  FILE *fd;
  DIR *diro;
  struct dirent *strdir;
Run Code Online (Sandbox Code Playgroud)

};

在 .c 文件中,我执行以下操作

if (pthread_create ( &thread_id[i], NULL, &hilos_hijos, ??? ) != 0){
       perror("Error al crear el hilo. \n");
       exit(EXIT_FAILURE);
} 
Run Code Online (Sandbox Code Playgroud)

我如何将所有这些参数传递给线程。我想:

1)首先使用malloc为这个结构分配内存,然后给每个参数一个值:

 struct data *info
 info = malloc(sizeof(struct data));
 info->palabra = ...;
Run Code Online (Sandbox Code Playgroud)

2)定义

 struct data info 
 info.palabra = ... ; 
 info.directorio = ...; 
Run Code Online (Sandbox Code Playgroud)

然后,我如何在线程中访问这些参数 void thread_function ( void *arguments){ ??? }

提前致谢

c multithreading posix pthreads

2
推荐指数
1
解决办法
7795
查看次数

实现List <E>:我需要一个新类吗?

首先,我过去几周一直在研究Java,所以我还没有太多的经验.

这更像是一个理论问题.我想创建一个简单的列表.

所以首先我创建了一个我指定了一些方法的类.我希望它是通用的,所以我可以使用任何类型.

  public interface List<E> 
Run Code Online (Sandbox Code Playgroud)

现在我需要实现它,所以我创建了:

    public class MyList<E> implements List<E>
Run Code Online (Sandbox Code Playgroud)

现在,我需要两个属性:

 private E element;
 private MyList<E> next;
Run Code Online (Sandbox Code Playgroud)

一个将保持我的泛型类型,另一个将是下一个元素的链接.首先,我不知道这是否是正确的写作方式.如果我把这个属性留在这个类中,它会正常工作吗?

其次,我一直在考虑是否最好创建另一个类,比如一个Box类,它将包含这两个字段,从而在我的实现过程中使操作更容易.

可能是一个愚蠢的问题,但我正在努力学习并了解实现这一目标的最佳方法.

谢谢你的时间.

java implementation list

2
推荐指数
1
解决办法
2692
查看次数

Spark sqlContext全选

我使用Spark SQLContext读取数据并将其存储在变量中:

 val somevar = sqlContext.read.parquet(some_file.parquet)
Run Code Online (Sandbox Code Playgroud)

然后我希望使用select选择所有值,例如:

  somevar.select(*)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

相当于:

somevar.registerTempTable("sometable")

sqlContext.sql("SELECT * FROM sometable")
Run Code Online (Sandbox Code Playgroud)

但我不想做以前的事情.

亲切的问候.

scala apache-spark apache-spark-sql

1
推荐指数
1
解决办法
1709
查看次数