我正在构建一个shell,并且在系统调用'execvp'时遇到了一些问题.我在这个主题上看到了一些其他的问题,但它们含糊不清,似乎没有完全解决(谁问过这些问题并没有提供太多信息而且得不到好的答案).
显然我有自己的命令行,我正在读取stdin的用户输入
mysh some/path $ ps -a
Run Code Online (Sandbox Code Playgroud)
我正在构建一个args数组作为char**并且数组本身可以工作(我认为),因为当我打印出我的函数中的值时,它显示
args[0] = 'ps'
args[1] = '-a'
args[2] = '(null)'
Run Code Online (Sandbox Code Playgroud)
所以,我在我的进程中调用fork和execvp(cmnd,args),其中cmnd是"ps",args如上所述,perror等.
我明白了
'Error: no such file or directory.'
Run Code Online (Sandbox Code Playgroud)
我需要输入$ PATH变量吗?我还在做别的什么吗?
这是我生成args数组的代码:
char ** get_args(char * cmnd) {
int index = 0;
char **args = (char **)emalloc(sizeof(char *));
char * copy = (char *) emalloc(sizeof(char)*(strlen(cmnd)));
strncpy(copy,cmnd,strlen(cmnd));
char * tok = strtok(copy," ");
while(tok != NULL) {
args[index] = (char *) emalloc(sizeof(char)*(strlen(tok)+1));
strncpy(args[index],tok,strlen(tok)+1);
index++;
tok = strtok(NULL," ");
args = (char**) erealloc(args,sizeof(char*)*(index+1));
}
args[index] = …
Run Code Online (Sandbox Code Playgroud) 啊.我讨厌bash转义序列.这样做的正确方法是什么?
$ export SUBLPKG=~/"Library/Application Support/Sublime Text 2/Packages"
$ cd $SUBLPKG
-bash: cd: /Users/$ME/Library/Application: No such file or directory
$ export SUBLPKG=~/"Library/Application\ Support/Sublime\ Text\ 2/Packages"
$echo $SUBLPKG
/Users/$ME/Library/Application\ Support/Sublime\ Text\ 2/Packages
$ cd $SUBLPKG
-bash: cd: /Users/$ME/Library/Application\: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我想打破所有的事情.
gaaaaaahhhhhhhhhhhhhhhhhh.
我正在尝试使用AVAudioPlayer作为助手编写自己的淡入淡出和淡出.
我的问题是:我有两个具有相同名称的方法定义,但一个采用int而另一个不采用参数.有没有办法让我告诉NSTimer哪一个打电话?无法理解文档:
-(void) stopWithFadeOut
{
if (_player.volume > 0.1) {
[self adjustVolume:-.1];
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(stopWithFadeOut) userInfo:NULL repeats:NO];
}
else {
[self stop];
}
}
Run Code Online (Sandbox Code Playgroud)
和
-(void) stopWithFadeOut:(NSString *)speed
{
int incr = [speed intValue];
if (_player.volume > 0.1) {
[self adjustVolume:-incr];
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(stopWithFadeOut) userInfo:NULL repeats:NO];
}
else {
[self stop];
}
}
Run Code Online (Sandbox Code Playgroud)