Титла: C / system() въпросче Публикувано от: mironcho в Jan 14, 2003, 23:30 Здравейте,
значи в една C програмка извиквам system() . Как да я накарам да не прекъсва изпълнението на програмата при възникването на грешка при изпълнение на задаената и команда ? В man page -а пише че връща '-1' - проверявам си за това, но явно програмата изобщо не стига до там, а се 'терминира' по рано от system() ... Естествено, при подадена валидна команда на system() , проблеми няма ![]() Титла: C / system() въпросче Публикувано от: в Jan 15, 2003, 09:48 Би ли постнал кода, щото не става много ясно кое къде се терминира, преди system() или вътре в него, ако е вътре в него прочете ли там за suid и sgid и другите ограничения при ползването на тази фунция? А ако е само невалидна командата при мен това върви и програмата завъшва с 0:
int main(void) { int rc; rc=system("ala bala"); printf("RC is %i \n",rc); return 0; } Титла: C / system() въпросче Публикувано от: mironcho в Jan 15, 2003, 11:15 gboolean exec_command( GtkWidget *widget,
gpointer data ) { gchar buff[COMMAND_LENGTH]; strncpy ( buff, GTK_ENTRY (widget)->text, COMMAND_LENGTH-3 ); strncat ( buff, " &", 2 ); if ( -1 == ( system( buff )) ) { #ifdef DEBUG g_print ("-1\n"); #endif } gtk_main_quit (); return FALSE; } DEBUG ми е дефинирано по горе в програмата и при неуспех би трябало да ми се отпечата '-1' на екрана ![]() Програмата няма suid или sgid привилегии ... Титла: C / system() въпросче Публикувано от: в Jan 15, 2003, 13:33 Еее ама ти съвсем по най-лесния начин си тръгнал :)))
Всичко много хубаво до "strncat ( buff, " &", 2 );" Коректният начин е да си напишеш функциика, нещо от сорта на: int spawn(char *args[]...) { if (fork()>0) { execv(args...); exit(127); } waitpid(...); return 0; } Вече в зависимост какво искаш да прави като цяло програмата ти почети за exec... функциите и waitpid() Успех Титла: C / system() въпросче Публикувано от: в Jan 15, 2003, 14:02 Ама къв съм завеян ... та да си довърша мисълта, вместо system(....) ползваш spawn(). Това е.
Успех Титла: C / system() въпросче Публикувано от: mironcho в Jan 15, 2003, 14:50 Мерси. Винаги се опитвам първо по най лесния начин
![]() Титла: C / system() въпросче Публикувано от: mironcho в Jan 15, 2003, 14:58 Забrunравих да ти кажа каква програмка правя - GTK2 програмка дето стартира въведената от теб команда ... Нещо от сорта на krun (майче така се казваше).
|