在C程序中调用strace(+ Seg fault)

时间:2018-05-24 04:07:29

标签: c exec strace execvp

而不是直接从命令行调用strace,

我想编写一个程序,为我运行strace给一个给定的程序。 我试图解决这个问题好几个小时,但我不知道如何让它发挥作用。

我之前写过一个使用下面使用的相同代码的程序。 以前的程序只是复制shell的操作,它将用户输入记录到日志文件中。链接:https://pastebin.com/Wf9TTZSM

我所做的只是取出相关代码,并将用户输入更改为运行" strace"。但它没有用。

我怎样才能使这个工作?

我在

下面遇到 Seg错误(核心转储)错误
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>


int main ()
{

    char *s = "strace ls";

    char* separator = " ";
    char* argv[64];
    int argc = 0;
    char* tmp;

    printf("%s", s);

    argv[argc] = strtok_r(s, separator, &tmp);
    while( argv[argc] != NULL){
        argc+=1;
        argv[argc] = strtok_r(NULL, separator, &tmp);
    }

    execvp(argv[0],argv);

    return 0;
}

0 个答案:

没有答案