我已经阅读了关于指针的各种教程,现在我提出一个问题,
这是:
char*input = malloc(sizeof(char)*24);
同样的
char*输入[24];
我的印象是malloc还会在堆上创建24个插槽.通常,我看到char输入[24],但我认为char*输入[24]比mallocing更简单.
谢谢!
在execl变体中使用下面的代码ls,但是ls -l不起作用,但是在我的execvp方法ls和ls-l工作中.我采用这种execl方法的原因是因为二进制文件的路径可能不同而execvp没有提供给我这个功能.理想情况下,我execl也想继续努力ls -l,但现在它不起作用ls -l.我试过阅读手册页,但没有帮助.
void child(int argc, char *argv[MAX_ARGS])
{
execvp(argv[0], argv);
}
void child(char *argv[], char* path)
{
execl(path, argv, NULL);
}
Run Code Online (Sandbox Code Playgroud) 问题A:
鉴于下面的代码,我理解当你调用一个fork时,大多数情况下,如果它的资源被传递给子进程.现在,我所查找的几乎所有Fork示例都设置得像我所拥有的那样.从它的外观来看,我不明白如何调用父进程,因为它在else块中.
问题B:
执行子进程中的代码后,它是否自动知道它现在必须进入父进程?我在其他示例中也看到了等待(NULL),如果它将要进入else块,那等待的作用是什么.假设我想要执行同一父项的两个子进程,这两个是否并行运行,然后在完成后运行父代码?谢谢.
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if(pid == 0){
printf("Hello World");
}
else{
printf("Hello World");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我想在C程序中更改$ PATH.在此代码之后,当我打印PATH变量时,它保持不变.这是我的方法,
char path[100]="PATH=";
char *input = "/newfolder/hello/";
putenv(strcat(path, input));
Run Code Online (Sandbox Code Playgroud)
我试图使用echo $ PATH将其打印出来,它仍然显示前一个路径,因为它没有改变.