Linux下C代码调用ulimit -n 报错

问题遇到的现象和发生背景

使用vfork,在子进程调用execlp执行 ulimit -n 40000,但是报错

问题相关代码,请勿粘贴截图
pid_t pid;
if ((pid = vfork()) < 0)
{
    printf("\nvfork error\n");
    return ;
}
else if (pid == 0)
{
    if ( execlp("ulimit", "ulimit","-n","40000", (char*)0) < 0)
    {
        perror("\nexeclp error\n");
        return ;
    }
}
运行结果及报错内容

execlp error
: No such file or directory

我的解答思路和尝试过的方法

由于后面的程序需要临时修改最大文件句柄,直接用system调用又没有实现效果,用vfork又报错

我想要达到的结果

ulimit不是一个可执行文件,它只是shell的一个指令,它只对当前shell及其后代有效。你要么把后面的程序封装到一个shell脚本里,在脚本里调用ulimit指令。要么调用系统API setrlimit()来修改。

sudo

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632