首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linuux - execvp:执行ls命令 - 获取错误"ls:无法访问/ etc:没有这样的文件或目录"

在Linux系统中,execvp是一个系统调用函数,用于执行一个新的程序。它接受两个参数,第一个参数是要执行的程序的路径,第二个参数是一个字符串数组,用于传递给新程序的命令行参数。

对于给定的问题,"ls:无法访问/ etc:没有这样的文件或目录"是一个错误信息,它表明在执行ls命令时,无法访问/ etc目录,因为该目录不存在。

解决这个问题的方法是检查/ etc目录是否存在。可以使用以下命令来验证:

代码语言:txt
复制
ls /etc

如果该目录不存在,可以尝试使用以下命令创建它:

代码语言:txt
复制
sudo mkdir /etc

请注意,上述命令需要管理员权限,因此可能需要输入管理员密码。

关于Linux系统和execvp函数的更多信息,可以参考以下链接:

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UNIX高级环境编程 第三次实验 实现带参数简单Shell

argv:参数表,比如ls命令中可带命令行参数-l,-a等。注意,argv第一个元素必须是要执行程序(命令路径名。 envp:环境变量表,供要执行命令使用。...execve(“/usr/bin/gcc”, argv, environ); // 出错,因为目录/usr/下没有ls程序。...**arg:**可执行程序所带参数,第一个参数为可执行文件名字,没有带路径且arg必须以NULL结束。...redirect_stdout中处理,execvp填入可执行文件参数,子进程开始执行,若出错才会执行下面的execvp error打印错误语句,waitpid等 待特定fork后子进程号结束,若出错则同样做出错打印信息处理...2.6 cd命令 对于一个自制shell如果没有cd命令就不算一个合格shell,因为cd是shell内部命令,如果用execve系统调用,fork出子进程改变是子 进程目录,父进程目录仍然没有发生改变

89520

shell脚本学习之必须了解基础命令

除了两个系统级别的配置文件外,每个用户目录下还有几个这样隐藏文件: .bash_profile :定义了用户个人化路径与环境变量文件名称。...~]# ls aaaa ls: 无法访问aaaa: 没有那个文件目录 [1]+  Done                    sleep 30 [root@localhost ~]# ls...aaaa ls: 无法访问aaaa: 没有那个文件目录 [root@localhost ~]# ls aaaa 2> /tmp/error [root@localhost ~]# cat /tmp.../error ls: 无法访问aaaa: 没有那个文件目录 [root@localhost ~]# ls aaaa 2>> /tmp/error [root@localhost ~]# cat.../tmp/error ls: 无法访问aaaa: 没有那个文件目录 ls: 无法访问aaaa: 没有那个文件目录 [ ] 中括号,中间为字符组合,代表中间字符中任意一个。

85090

linux基础(day23)

echo 表示会在命令历史里面,倒着网上找第一个执行以 echo 开头命令 查看敲过命令存放位置 在我们使用过命令,会存放在用户目录下 /root/.bash_history [root@localhost...在敲完命令后,直接到配置文件中查看,会发现其中并没有存在 这是因为仅存在内存中,只有在退出终端时候,才能够保存到配置文件中去 环境变量HISTSIZE在 /etc/profile 中配置 vim...[root@hf-01 ~]# cat a.txt ls: 无法访问aaa.txt: 没有那个文件目录 1.txt 2.txt [root@hf-01 ~]# 把正确和错误输出到文件中,方法一...$ cat a.txt ls: 无法访问aaa.txt: 没有那个文件目录 1.txt 2.txt ls: 无法访问aaa.txt: 没有那个文件目录 1.txt 2.txt 把正确和错误输出到文件中...~]# cat 1.txt 1.txt 2.txt [root@hf-01 ~]# cat a.txt ls: 无法访问aaa.txt: 没有那个文件目录 既可以写入一个文件中,也可以分开写入 小于号

48710

Linux模拟实现【简易版bash】

合并编译后,得到了这样一个程序: 动图Gif 可以看到,bash 基本雏形已经形成,不过还存在一些不足,比如 ls 命令显示文件无高亮、cd命令无法切换、环境变量无法添加至子进程等,这些问题都可以通过特殊处理避免...---- 5、特殊情况处理 对特殊情况进行处理,使 myBash 更加完善 5.1、ls 显示高亮 系统中 bash 在面对 ls文件显示指令时,不仅会显示内容,还会将特殊文件做颜色高亮处理,比如在我环境下...命令调用系统级接口 chdir 让 父进程(myBash) 进行目录移动 资料来源:互联网 5.3、cd 首先实现不同目录切换 切换本质:令当前 bash 移动至另一个目录下,不能直接使用...子进程 ,因为需要移动是 父进程(bash) 对于当前 myBash 来说,cd 没有丝毫效果,因为此时 指令会被拆分后交给子进程处理,这个方向本身就是错误 特殊情况特殊处理,同 ls 高亮一样...> 文件文件中写入数据,写入前会先清空内容 echo 字符串 >> 文件文件中追加数据,追加前不会先清空内容 可执行程序 < 文件文件中读取数据给可执行程序 所以实现重定向关键在于判断指令中是否含有

24020

Linux系统下进程编程之exec族函数解析(四)

譬如说我们希望子进程来执行ls -la 命令就不行了(没有源代码,只有编译好执行程序);为了解决这种不灵活性,所以在Linux系统中引入了exec族函数。...它可以根据指定文件目录名找到可执行文件,并用它来取代原调用进程数据段、代码段和堆栈段,在执行完之后,原调用进程内容除了进程号外,其他全部被新程序内容替换了。...另外,这里执行文件既可以是二进制文件,也可以是Linux下任何可执行脚本文件。...现在我们以可执行程序ls -la来演示,但是我们先知道它路径,要用命令---which ls 来查看: ubuntu@ubuntu-virtual-machine:~$ which ls...这两个函数会在下面进行讲解): 现在使用excel来演示可执行程序----ls -la,最后它在环境变量目录下找到了ls ,在当前用户目录找不到: #include

1.3K30

linux系统编程之进程(三):exec系列函数和system函数

execv、execvp和execvpe第二个参数是一个字符串数组,新程序在启动时会把在argv数组中给定参数传递到main 名字含字母“p”函数会搜索PATH环境变量去查找新程序执行文件...如果可执行文件不在PATH定义路径上,就必须把包括子目录在内绝对文件名做为一个参数传递给这些函数。 名字最后一个字母为"e"函数可以自设环境变量。...根目录 umask 文件锁 进程信号屏蔽 未处理信号 资源限制 进程时间 而下面属性是发生变化文件描述符如果存在close-on-exec标记的话,那么打开文件描述符会被关闭。...三、system函数 功能:system()函数调用“/bin/sh -c command”执行特定命令,阻塞当前进程直到command命令执行完毕 原型:  int system(const char...*command); 返回值:     如果无法启动shell运行命令,system将返回127;出现不能执行system调用其他错误时返回-1。

2.1K60

Shell脚本管道符与重定向

注释:其中shift+\意味着 例如:date ; tar -zcvf etc.tar.gz /etc ; date可以计算中间打包压缩命令执行耗时 再如:ls && echo yes || echo...管道符 命令格式: 命令1 | 命令2,有一定编程思想在里面 命令1正确输出作为命令2操作对象,和逻辑与不一样 实际案例: ls -l /etc | more #代表将ls -l /etc输出分屏显示...# 1>可以省略不写,默认所至标准输出 $ls test.sh test1.sh ls: test1.sh: 没有这个文件目录 test.sh #示例3.把错误输出到err.txt,正确输出到suc.txt...中 $ls test.sh test1.sh 1>suc.txt 2> err.txt # 2>是将错误输出到文件 $cat suc.txt err.txt test.sh ls: 无法访问test1....sh: 没有那个文件目录 # 继续追加把输出写入suc.txt err.txt  “>>”追加操作符 $ls test.sh test1.sh 1>>suc.txt 2>>err.txt #示例

1.7K42

用户及组管理useradd、userdel、groupadd、groupdel

作用是把前面命令输出再输入给后面的命令。 注意: 1)管道命令只处理前一个命令正确输出,不处理错误输出 2)管道命令右边命令,必须能够接收标准输入流命令才行。...组user1内有用户user1,无法删除 说明: 该命令没有特殊选项,只能删除空白组!.../group slocate:x:21: test1:x:1002: [root@adai002 ~]# ls /home/user001 ls: 无法访问/home/user001: 没有那个文件目录...说明: -M选项是不创建目录,但是在/etc/passwd文件中仍有这个字段,但是用ls /home/user001查看时提示目录不存在,所以-M选项作用只是不创建那个目录。...-ld /home/test1/ ls无法访问/home/test1:没有那个文件目录 即:-r选项作用时删除账户时候连带账户目录一起删除。

64610

Shell脚本管道符与重定向

注释:其中shift+\意味着 例如:date ; tar -zcvf etc.tar.gz /etc ; date可以计算中间打包压缩命令执行耗时 再如:ls && echo yes || echo...管道符 命令格式: 命令1 | 命令2,有一定编程思想在里面 命令1正确输出作为命令2操作对象,和逻辑与不一样 实际案例: ls -l /etc | more #代表将ls -l /etc输出分屏显示...# 1>可以省略不写,默认所至标准输出 $ls test.sh test1.sh ls: test1.sh: 没有这个文件目录 test.sh #示例3.把错误输出到err.txt,正确输出到suc.txt...中 $ls test.sh test1.sh 1>suc.txt 2> err.txt # 2>是将错误输出到文件 $cat suc.txt err.txt test.sh ls: 无法访问test1....sh: 没有那个文件目录 # 继续追加把输出写入suc.txt err.txt  “>>”追加操作符 $ls test.sh test1.sh 1>>suc.txt 2>>err.txt #示例

93200

Linux:进程控制(二.详细讲解进程程序替换)

execlp:该函数与 execl 类似,但是它会在系统环境变量 PATH 指定目录中查找可执行文件。...:类似于 execv,但是它会在系统环境变量 PATH 指定目录中查找可执行文件。...它原型如下: int execvp(const char *file, char *const argv[]); file 是要执行执行文件文件名,argv 是一个以 NULL 结尾参数数组,...(phony targets)通过声明伪目标,你可以确保 make 总是执行相应命令,而不会因为同名文件目录存在而跳过这些命令 运行 make 命令时(没有指定具体目标),make 会首先查找...然而,对于 clean 这样伪目标,它并没有列出任何依赖项,因此其他目标的构建状态不会影响 clean 执行

14110

history、重定向、alias 原

/.bash_history /root/.bash_history history目录 显示使用过命令历史,默认保存1000条使用过命令(注:此令需要是在正常关机操作情况下处1000...~]# echo $HISTSIZE 2000 搜索关键字"HIST"找到‘HISTSIZE=1000’,在此更改其数字,保存退出,然后执行命令‘source /etc/profile’刷新该配置文件才会生效...HIST HISTSIZE=1000 8.3 命令补全和别名 命令补全Tab 按一次tab可以补全一个命令参数(需要安装包bash-completion,并重启系统);按两次tab可以显示以某字母开头所有命令文件名...,2>>” ‘>’:输出重定向 ‘>>’:追加重定向 ‘2>’:错误重定向 ‘<’:输入重定向 使用‘>’命令时会将文件内原有内容删除。...: 无法访问aaaa.txt: 没有那个文件目录 说明: 使用ls命令查看 {1,2}.txt aaaa.txt,1.txt和2.txt文件存在,可以使用ls查看,aaaa.txt不存在,使用ls查看会报错

66140

Linux进程控制【进程程序替换】

错误运行情况,改变 path execv("/usr/bin", argv); //故意提供错误路径 与 execl 函数不同,execv 是以表形式进行参数传递 2.3、函数3...arg, ...); 函数解读 返回值:替换失败返回 -1 参数1:待替换程序名,如 ls、pwd、clear 参数2~N:可变参数列表,为命令选项 execlp 就像是 execl 升级版,可以自动到...PATH 中,程序会替换错误 execvp("a.out", argv); 如果想替换自己写程序,那么只需要将路径添加至 PATH 中即可 2.5、函数5 execle e 表示 env 环境变量表...程序能继承 bash 中环境变量表了 在 bash 下执行程序,等价于在 bash 下替换子进程为指定程序,并将 bash 中环境变量表 environ 传递给指定程序使用 其他没有带 e 替换函数...等函数,无论什么语言文件流操作函数都需要调用它们 ---- 2.7、函数7 execvpe 对 execvp 再一层封装,使用方法与 execvp 一致,不过最后一个参数可以传递环境变量表 #

19820

【Linux】进程程序替换

让子进程执行父进程一部分代码 红框中代码实际上是父进程代码,在没有执行fork之前代码就有了,在没有创建子进程之前,父进程代码加载到内存了,子进程被创建出来是没有独立代码,这个代码是父进程代码...:找到它,加载执行它 arg:你想怎么执行它(若想执行ls指令,是只执行ls,还是执行ls- l 、ls -l -a指令 在命令行怎么执行这个命令,就把参数一个一个传递给execl就可以了 最终以...,依旧可以执行ls指令 ---- 4. execvp int execvp(const char *file, char *const argv[]); 带p:代表当执行程序时候,只需要指定程序名即可...是一个进程,所以用while死循环 缓冲区问题 ---- 正常来说,运行可执行程序会显示命令行,但是由于没有\n刷新缓冲区,也没有使用相关刷新库函数,所以命令行会一直在缓冲区中 直到 程序结束才显示...*s, int size, FILE *stream); 从特定标准输入当中获取对应命令行输入,把对应数据放在缓冲区中 ---- ---- ---- 执行执行程序后,发现在命令行中输入 ls

1.9K30

简单模拟实现shell(Linux)

目录​​​​​​​ 前言 展示效果 实现代码 前言 该代码模拟了shell实现,也就是解析类似于“ls -a -l"命令,当我们启动我们自己写shell执行程序时,我们输入"ls"命令,也可以展示出在...shell中输入"ls"时同样效果,一下为展示效果 展示效果 当我们在系统shell下输入"ls"时,会显示 以下代码是我自主模拟实现shell程序执行"ls"命令情况 是不是很类似呢..."[xkjtx@locatehost myshell]# "问题(我在《制作进度条》那篇博客讲过) fflush(stdout); //2.获取命令行 char cmd_line...(要父进程去执行命令,如cd命令) //目前写法发现:cd ~, cd -, rm等命令做不了 //错误写法 // if (g_argv[0] == "cd")...(g_argv[0], g_argv);//选这个函数原因:(1)v:用是数组,恰好有数组 (2)每个都要绝对路径,这是没有必要,因此可以使用带p函数 exit(1);//进行到这里

12410

8.5 输入输出重定向

两个大于号>>,就是追加,不会删除2.txt文件内容,而是在原有的基础上将1.txt文件内容写入到2.txt文件中去 ls aaa.txt 2> err 2大于号表示错误输出(错误信息) 2>...表示它会把命令产生错误信息指定输入到一个文件中去 [root@hf-01 ~]# laaa -bash: laaa: 未找到命令 [root@hf-01 ~]# laaa 2> a.txt [root...ls: 无法访问aaa.txt: 没有那个文件目录 1.txt 2.txt [root@hf-01 ~]# 把正确和错误输出到文件中,方法一 ls [12].txt aaa.txt &>> a.txt...$ cat a.txt ls: 无法访问aaa.txt: 没有那个文件目录 1.txt 2.txt ls: 无法访问aaa.txt: 没有那个文件目录 1.txt 2.txt 把正确和错误输出到文件中...~]# cat 1.txt 1.txt 2.txt [root@hf-01 ~]# cat a.txt ls: 无法访问aaa.txt: 没有那个文件目录 既可以写入一个文件中,也可以分开写入 小于号

88670

一文吃透Linux提权

在这种情况下,两个用户都是通用,而在垂直方式中,我们将特权从普通用户提升为管理员 简单来说就是 即用户无法访问(读取/写入/执行)不允许访问文件。...当将同一目录共享给多个客户机,但对每个客户机提供权限不同时,可以这样:[共享目录] [主机名1IP1(参数1,参数2)] [主机名2IP2(参数3,参数4)] ?.../binary即可执行它。那么我们将能够执行当前目录任何脚本二进制文件。 假设小明是管理员,而她添加了“。” 在她PATH上,这样她就不必再输入两个字符了去执行脚本二进制文件。 带“。”...在PATH中, 小白告诉小明’ls命令在他目录中不起作用 小白在他目录中添加代码,这将更改sudoers文件并使他成为管理员 小白将该代码存储在名为“ ls”并使其可执行 小明具有root特权。...她来了,并在小白目录执行了’ls命令 恶意代码不是通过原始ls命令而是通过root访问来执行 在另存为“ ls文件中,添加了一个代码,该代码将打印“ Hello world” ?

5.3K42

【linux命令讲解大全】193.Linux命令解析:chroot与clock用途和实例

通过 chroot 命令,系统将会读取指定位置目录文件,而不再是旧目录目录结构和文件。...因此,chroot 命令带来好处主要有以下三个方面: 增强系统安全性,限制用户权限: 在经过 chroot 后,在新目录无法访问到旧系统根目录结构和文件,从而提高了系统安全性。...通过该命令,运行是 target 中 ls 命令(而不是本机 /bin/ls),然后立即返回到原来目录环境。...语法 clock [选项] 选项 --adjust:第一次使用 --set --systohc 参数设置硬件时钟时,在 /etc 目录下生成一个名为 adjtime 文件。...--debug:详细显示指令执行过程,便于排错了解程序执行情况。 --directisa:告诉 clock 命令不要通过 /dev/rtc 设备文件,直接对硬件时钟进行读写。

11610
领券