Bir giriş dizesini ';' kullanarak bölmek için bir program yazdım sonlandırıcı olarak ve ';' den sonra dizenin bir kısmını yazdırır. Program, ';' giriş dizesinde geçerli bir terminal komutu değil, aynı zamanda command not found
'u yazdırır. Öte yandan, alt dizgi ';' ile takip edildiğinde hiçbir şey yazdırmaz. geçerli bir terminal komutudur ve alt dizini komut olarak yürütür, örn. giriş durumunda "sjhjh; ls" ls komutunu çalıştıracaktır.';' Girişteki karakter yanlış yorumlandı
command not found
bölümünden nasıl kurtulurum? İşte kod: aslında iki programları çağırmak komut satırında
your_program_name sjhjh;ls
: Eğer gibi programı çalıştırmak
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char * input;
char * str;
char * word;
char terminator = ';';
if (argc < 2) {
fprintf(stderr,"ERROR, no string provided\n");
exit(1);
}
input = argv[1];
word = strchr(input, terminator);
if (word != NULL) printf("%s\n", word);
return 0;
}
Çocuklar, bu soruyu reddetme. Kabuk ve bir uygulama arasındaki aslında oldukça nadir ve ilginç bir örnek. – DyZ
, shell'in ismini –
@DYZ etiketi olarak eklemenizi öneririm. Bu, aslında hata ayıklayıcısını kullanmama veya bir MCVE oluşturmama örneğidir. Aksi halde, metnin asla asıl olarak 'argv' ye ulaşmadığı ve sorunun tamamen farklı bir odağı olabileceği açıktır. – grek40