首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >execve()在尝试使用脚本运行脚本时没有执行脚本

execve()在尝试使用脚本运行脚本时没有执行脚本
EN

Stack Overflow用户
提问于 2022-03-18 15:24:36
回答 1查看 100关注 0票数 -1

我想使用execve()运行一个脚本。在下面的代码中,我在c++代码中打印环境变量,然后将这些变量的输出传递给一个名为"usrscript“的脚本,以便在那里打印它们,但是execve()没有执行该脚本。`

代码语言:javascript
复制
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <iostream>
#include <stdio.h>
using namespace std;
    int main(int argc, char *argv[], char * envp[]){ 
    char arg1[100]={};
    char arg2[100]={'\0'};
    char arg3[100]={};
    for (int i=0 ; envp[i] != NULL; i++){
        if('U'==envp[i][0] && 'S'==envp[i][1] && 'E'==envp[i][2] && 'R'==envp[i][3] && '='==envp[i][4]){ 
            for(int j=5 ;envp[i][j] != '\0';j++ ){
                arg1[j-5] =  envp[i][j];
            }
            cout<<arg1<<endl;
        }
        if('P'==envp[i][0] && 'A'==envp[i][1] && 'T'==envp[i][2] && 'H'==envp[i][3]){ 
            for(int j=5 ;envp[i][j] != '\0';j++ ){
                arg2[j-5] =  envp[i][j];
            }
            cout<<arg2<<endl;
        }
        if('T'==envp[i][0] && 'E'==envp[i][1] && 'R'==envp[i][2] && 'M'==envp[i][3]){ 
            for(int j=5 ;envp[i][j] != '\0';j++ ){
                arg3[j-5] = envp[i][j];
            }
            cout<<arg3<<endl;
        }
    }
    char cmd[]="./usrscript.sh";
    char scr[] ="usrscript";
    char os[]="OS2022=5ma32zw";
    
    char *const vectorArg[] = {scr,arg1,arg2,arg3,NULL};
    char *const vectorEnv[]= {os,NULL};


    execve(cmd,vectorArg,vectorEnv);
    cout<<"Failed\n";

    return 0;}

传递给我的脚本是:

代码语言:javascript
复制
#!usr/bin/bash
echo "hello"

for var in "$@"
do
    echo "$var"
done    

echo $OS2022
echo $TERM
echo $PATH
echo $USER

我试图查看是否将不正确的值传递给execve(),但是找不到任何东西。任何建议都会有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 07:35:47

通过在脚本中用#!usr/bin/bash替换#!/bin/bash解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71529364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档