小编mar*_*iel的帖子

mallocing是否等效于具有指定数组大小的指针

我已经阅读了关于指针的各种教程,现在我提出一个问题,

这是:

char*input = malloc(sizeof(char)*24);

同样的

char*输入[24];

我的印象是malloc还会在堆上创建24个插槽.通常,我看到char输入[24],但我认为char*输入[24]比mallocing更简单.

谢谢!

c pointers

4
推荐指数
2
解决办法
154
查看次数

像"ls -l"这样的命令不在execl中执行,而在execvp中它可以工作

execl变体中使用下面的代码ls,但是ls -l不起作用,但是在我的execvp方法lsls-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)

c exec

2
推荐指数
1
解决办法
2万
查看次数

Fork - 父和子如何运行,即使它是if else

问题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 unix fork

-2
推荐指数
1
解决办法
1327
查看次数

在C中设置环境变量

我想在C程序中更改$ PATH.在此代码之后,当我打印PATH变量时,它保持不变.这是我的方法,

    char path[100]="PATH=";
    char *input = "/newfolder/hello/";
    putenv(strcat(path, input));
Run Code Online (Sandbox Code Playgroud)

我试图使用echo $ PATH将其打印出来,它仍然显示前一个路径,因为它没有改变.

c

-2
推荐指数
1
解决办法
863
查看次数

标签 统计

c ×4

exec ×1

fork ×1

pointers ×1

unix ×1