免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: cbxk
打印 上一主题 下一主题

C语言:chroot 和exec族的问题 [复制链接]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
11 [报告]
发表于 2008-11-06 15:11 |只看该作者
原帖由 cbxk 于 2008-11-6 14:12 发表
为什么总是找不到文件啊?是execl的问题吗?

显然是你自己的问题。

论坛徽章:
0
12 [报告]
发表于 2008-11-06 17:09 |只看该作者
楼主你改过的用法很奇怪
这样试试:
int main(int argc, char *argv[])
{
    int retv;

    retv = chroot("/usr/oj/testout");
    if( -1 == retv )
    {
        perror("chroot");
        return -1;
    }
    execl("/testout.t","testout.t",NULL);
    perror("execl");
    return -1;
}

估计还是不行,我看你程序的输出,貌似chroot已经成功了。不过这样应该能够看到问题

[ 本帖最后由 pushion 于 2008-11-6 17:10 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2008-11-07 10:02 |只看该作者
原帖由 MMMIX 于 2008-11-6 14:01 发表

当然有用了,exec 调用也可能失败的。


失败总归是少数情况,成调用成功了还有用吗?

论坛徽章:
0
14 [报告]
发表于 2008-11-07 10:03 |只看该作者
原帖由 cbxk 于 2008-11-6 14:12 发表
程序继续修改~~
#include
#include
int main()
{

if (chroot("/usr/oj/"))
        {
                perror("chroot");
        }
if(chdir("/"))        
        {
                perror( ...



我都说过了,你fork出一个子进程去execl加载你其他的程序,我都测试过了,没问题的。

论坛徽章:
0
15 [报告]
发表于 2008-11-07 10:05 |只看该作者
#include<unistd.h>

int main()
{

        //        chroot("/usr/oj/testout");
        if (fork() == 0)
                execl("./testout.t","testout.t",NULL);
        else
                return 0;
}

//testout.t
#include <stdio.h>

int main(void)
{
        printf("0_0\n");
        return 0;
}
没有wait,可能会产生僵尸进程。大致是这样的吧。

[ 本帖最后由 eveson 于 2008-11-7 10:10 编辑 ]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
16 [报告]
发表于 2008-11-07 10:15 |只看该作者
原帖由 eveson 于 2008-11-7 10:02 发表


失败总归是少数情况,成调用成功了还有用吗?

失败再少也应该检查;那个本来就是为失败的情况准备的。

论坛徽章:
0
17 [报告]
发表于 2008-11-07 10:46 |只看该作者

是chroot 和excel的问题

你可以把chroot 注释掉,然后在execl里的第一个参数写绝对路径就好了,用不了那么麻烦

论坛徽章:
0
18 [报告]
发表于 2008-11-07 10:53 |只看该作者

补充一下

或者用chdir来代替chroot也可以

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
19 [报告]
发表于 2008-11-07 11:41 |只看该作者
原帖由 liuwenhan 于 2008-11-7 10:53 发表
或者用chdir来代替chroot也可以

chdir 显然是无法代替 chroot 的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP