由买买提看人间百态

topics

全部话题 - 话题: execvp
(共0页)
f***c
发帖数: 281
1
来自主题: Unix版 - the path of execvp
用execvp时指定path必须是确定的命令名字吗?
如execvp("/usr/bin/ls", args)可以正确执行ls命令,
能修改路径使其能执行多个命令吗?
i have tried to change /usr/bin/ls to /usr/bin/*, but no use
any good ways? thx!
l**n
发帖数: 44
2
来自主题: Programming版 - c warning
static void foo_execvp(const char* cmd, char const* const* argv)
{
...
#if defined(_MSC_VER)
_execvp(cmd, argv);
#elif defined(__MINGW32__)
execvp(cmd, argv);
#else
execvp(cmd, (char* const*)argv); //warning: cast discards qualifiers
from pointer target type
#endif
}
从我的测试来看,似乎只有在linux64 下才会出现这个警告信息,为什么?
如何消除这个warning?
多谢!
c*****a
发帖数: 808
3
来自主题: Programming版 - 在用C写shell,遇到问题
是不是应该在这里检查
if( pid == 0){
这里查
execvp(args[0],args);
_exit(0);
}
然后加上 if argus[0]=="a"
execvp("/bin/ls",args")
l***t
发帖数: 114
4
来自主题: Unix版 - A problem about child process.
if( (pid = fork()) == 0 )}
.....
i = execvp(xxx,xxxxx[]);
if( i == -1 ){
printf("error!");
//kill(pid,9) ???
}
}
ps
1201 proc1
1203 proc1
.....
when execvp fail, the child process 1203 is
still runing,if I use kill when fail,the
process 1201 will be killed too.
How can I kill 1203 only when exec fail?
thanks!
S*A
发帖数: 7142
5
来自主题: Hardware版 - 延长笔记本电池寿命的一点心得
这个电池的道理其实是在遥控直升机的锂电池上学来的。
放到电脑上的锂电池也一样适用。只不过直升机上的电池
维护比较苛刻,放电电流很大(20C 以上),而且电池性能
的减弱对飞行性能影响很大。还有一点就是直升机电池
没有智能保护电路,因为放电电流很大,对电池的损伤
可以比较容易碰到,所以直升机电池维护比较仔细。
锂电池有两种情况会损伤电池容量。第一就是过渡放电,
放电超过 20% 就容易损伤容量。完全放干,低于 3.7V
一个 cell 就会严重损伤。这个我想大家都知道。
另一个就是长期储存高电量,这个会减少电池容量。
所以在直升机上最佳的电池使用方式是每次飞行前
充电,飞完把电都用掉。长期不用要放掉电,但是要
注意不要过度放电,低于20%。
所以笔记本长期插AC电源会减少电池寿命。
如果长期使用 AC,比较好的办法是吧电池放到 20% - 30%
左右,然后把电池拿出来。电池自己有轻微放电,然后
定期要冲放一下,例如几个月。
在 Linux 下面可以用 ACPI 接口直接看到电池的设计
容量和当前容量。可以比较精确衡量电池的损坏程度。
我用这种方法验证了的确长期使用 AC, 拿出电池对
... 阅读全帖
j******a
发帖数: 1599
6
问题是这样的:一个parent process, 在我这里就是个shell, 能够fork()一个child
process, 这个child process 又能继续产生子进程。 但是我们希望最多有三层shell
, 就要报错,我本来想用一个int shell_counter的变量来记录,但是每次fork()以后
这个变量就从新初始化了,所以就达不到效果。
那么怎么样才能让child process 看到parent process的这个变量呢?换言之,怎么把
这个变量传递给child process呢?
l*********b
发帖数: 8
7
fork之后parent和child address space一样的,本来在parent的变量什么值,在child
里面一样

shell
T*******i
发帖数: 4992
8
来自主题: Programming版 - 不会写pipe大虾帮帮忙吧...
execvp(argv[1], argv + 1);
X****r
发帖数: 3557
9
来自主题: Programming版 - c warning
因为你将一个char const* const*强制转换为char * const*,把char上面的
const去掉了,自然有这个警告。
除去警告最正确方法是把argv指向的内容深度复制一遍后传给execvp。

qualifiers
l**n
发帖数: 44
10
来自主题: Programming版 - c warning
According to your reply, I modified the code:
...
#else
char* const* dp_argv = (char**)malloc(strlen(*argv)+1);
strcpy(*dp_argv,*argv);
execvp(cmd, dp_argv);
#endif
It works well. Thanks!
c*****a
发帖数: 808
11
来自主题: Programming版 - 在用C写shell,遇到问题
哦,想出来了,发现strcmp可以
最后问下exit的dir path是哪里,貌似我在execvp用不了exit
l*l
发帖数: 225
12
来自主题: Unix版 - How to send email in C program.
1)
ststem, execl, execlp, execle, execv, execvp
来调用 sendmail 或者 mail .
2)
要不你自己写连接 tcp/25
然后 send helo, vrfy, rcpt, data,
然后send message 就可以了.
其实你这样写的话就相当于写了一个简单的 mail 发送程序. 何苦呢?
w*****n
发帖数: 94
13
来自主题: Unix版 - A problem about child process.

why not use exit()?
if (fork()==0){
execvp(...);
exit();
}
There is no need to test the return value of exec.
r*e
发帖数: 112
14
I am try to use one function.
int execvp (const char *file, char *const arv[]);
but , I am confused by 'const char *' and 'char *const'
what is the differnce between them?
Tx!
f***c
发帖数: 281
15
来自主题: Unix版 - [转载] Re: freopen
【 以下文字转载自 Programming 讨论区 】
【 原文由 funsc 所发表 】
ok
the code is as follows:
while(1)
{
getcommand(args); //the function is to get a command line and works corrently
pid = fork();
if (pid == 0)
{
fd = freopen("a.txt", "w", stdout);
execvp(args[0], args);
}
else
{
waitpid(pid);
}
}
after i run ls -l > foo, the output has been written to a.txt, as i hoped,
but when i run ls again, the result does not show on screen.
it seems that after i redirect the stdout to the file "
f******k
发帖数: 26
16
Thanks.
Will it work if it is:
execvp("ls", "ls", "&", 0);
(共0页)