简单细分:
//temp.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>
int
main(int argc, char *argv[])
{
char *myargs[3];
myargs[0] = strdup("wc");
myargs[1] = strdup("temp.c");
myargs[2] = NULL;
execvp(myargs[0], myargs);
}
在终端:
$ gcc temp.c; ./a.out 你好,我是孩子(pid:30232) 17 37 362 temp.c
好的,它运作正常。
在clion:
wc:temp.c:没有这样的文件或目录
那么,如何在clion中启用像wc
这样的gnu扩展?
答案 0 :(得分:1)
CLion在CMake项目设置中指定的单独构建目录中编译和运行程序,通常它是项目根目录中的cmake-build-debug
子目录。这意味着,当您运行程序时,工作目录中没有temp.c
文件。
换句话说,您的项目布局很可能如下所示:
.
├── cmake-build-debug
│ ├── temp ### <- your executable
│ └── ...
├── CMakeLists.txt
└── temp.c
尝试将绝对路径传递给/path/to/temp.c
,或者从工作目录中找到它的相对路径,工作目录是项目构建目录,即../temp.c
。