如何使用像wc这样的GNU扩展作为execvp在clion中的参数?

时间:2018-04-17 15:25:40

标签: c clion

简单细分:

//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扩展?

1 个答案:

答案 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