我正在使用多线程程序.
首先,我将我的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的文件描述符表.但这也不起作用.
如何将标准输出切换回其原始目标(终端,管道,文件等)?
我正在学习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.它是否正确?我只是找不到确认这一点的信息.
我面临以下问题:打印执行计划时,我无法查看所有推送的过滤器。
执行的代码是
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)
不幸的是,以前的并没有解决问题。
关于如何克服这个问题的任何建议?
我正在测试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 中可能吗?
谢谢你。
我正在研究一个多线程程序,并对如何定义互斥锁有疑问.
相关信息:程序具有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个线程可以访问它.那么我应该放在哪里呢?
我不知道我是否正确地解释自己.尽我所能.
我想创建用户指定的一些线程.我为此编写的代码是:
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)
它是否正确?
所以我将列表定义为全局变量:
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) 我做了一个程序,有时它会抛出一堆粉碎检测到的错误.它可以在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) 如果我有喜欢的Scala元组选项:
(Some(1), None)
(None, Some(1))
(None, None)
Run Code Online (Sandbox Code Playgroud)
我希望总是提取"Some"值(如果存在),否则得到None.模式匹配的唯一方法是什么?
当我创建一个线程时,我想传递几个参数。所以我在头文件中定义了以下内容:
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){ ??? }
提前致谢
首先,我过去几周一直在研究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类,它将包含这两个字段,从而在我的实现过程中使操作更容易.
可能是一个愚蠢的问题,但我正在努力学习并了解实现这一目标的最佳方法.
谢谢你的时间.
我使用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)
但我不想做以前的事情.
亲切的问候.