One for the Unix gurus
One for the Unix gurus
- Subject: One for the Unix gurus
- From: Glenn Zelniker <email@hidden>
- Date: Fri, 25 Jun 2004 20:32:44 -0400
I need to integrate some ssh functions (primarily scp) into an
application and I've been experimenting with writing wrappers around
Unix commands. I'm taking the usual approach -- using NSTask, NSPipe,
and NSFileHandle. I launch the task from the proper location, pass the
command-line arguments via an NSArray, pipe stdin, stdout, and stderr
as needed, and react to NSNotifications triggered by asynchronous
background reads. This works fine for simple commands like "ls" and
I've verified that I can execute "ls" with multiple command-line
arguments, such as "ls -l -a /myfiles." I've also verified that I get
output through the pipe I set up for stdout and errors through the pipe
for stderr. So far, so good...
The problem is that I can't seem to get things like scp or ftp working.
For example, when running ftp from the command line, one normally sees
on the terminal a stream of information welcoming you to the host,
disclaimers, and finally an FTP> prompt. When I run ftp from the GUI
I've written (and I'm sure the arguments are being parsed correctly), I
only see the FTP> prompt in the NSTextView I've set up to log stderr.
Where does the other "stuff" go? It doesn't seem to go to the pipe I've
set up for stdout. When I set the associated handle for
readInBackgroundAndNotify, I'm looking out for
NSFileHandleReadCompletionNotification. Should I be using a different
notification and is this why I'm missing the welcome notice? Is there a
place besides stdout and stderr that it's going to?
I won't even talk about the stuff I'm trying to send to the command's
input -- I want to understand what's happening with the output first!
Any help would be appreciated immensely.
Glenn Zelniker
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.