Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
Nelle ultime settimane abbiamo provato tre delle proposte top di gamma di NZXT nelle categorie case, dissipatori e ventole. Rispettivamente, parliamo dell'H9 Flow RGB+, Kraken Elite 420 e F140X. Si tratta, chiaramente, di prodotti di fascia alta che si rivolgono agli utenti DIY che desiderano il massimo per la propria build. Tuttavia, mentre i primi due dispositivi mantengono questa direzione, le ventole purtroppo hanno mostrato qualche tallone d'Achille di troppo
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-05-2007, 17:26   #1
albertoparisi
Junior Member
 
Iscritto dal: May 2007
Messaggi: 6
[c]uso combinato di fork ed execlp

Salve a tutti,
inanzitutto sono nuovo di questo forum e volevo farvi i complimenti vi seguo da un bel pò ma non avevo mai avuto occasione di registrartmi..

..ora quest'occasione è arrivata..

..sto sviluppando un piccolo programmino in c che se lanciato dalla shell di comando (es: ./nomeprogr stringa percorso) dovrebbe cercare la stringa "stringa" a partire da "percorso".Per far cio ho bisogno di creare un processo figlio con execlp che dovrebbe permettermi di invocare una shell per far eseguire una semplice find dove specificare cosa cercare e ridirigere l'output in un file di testo leggibile in un secondo momento dal processo padre..

allego il codice
****************************************************************
#include "main.h";


int main(int argc,char *argv[]){
pid_t pid;
FILE *fp;
fp=fopen("/users/Al/cercastring/azzo.txt","w");
if((fp!=NULL)){
printf("File ridirezione creato\n");

if((pid=fork())==-1){
perror("Errore nella creazione processo figlio!!\n");
fclose(fp);
return 2;
}
else{
printf("e fin qua ghe sen!!%d.\n",(int)getpid());
execlp("sh", "sh", "-c", "find &argv[2] -type d >> /users/Al/cercastring/azzo.txt", NULL);
perror("Errore nella chiamata a execlp!\n");
fclose(fp);
return 3;
}
fclose(fp);

}
else{
printf("Errore creazione file per la ridirezione!!\n");
}

return 0;
}

Ora il mio problema sta nel fatto che non so come poter specificare argv[2] in quanto non viene preso il valore ma considerato come stringa..

..qualcuno sa aiutarmi se mi sono spiegato bene..

Al
albertoparisi è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2007, 17:43   #2
Slayer86
Senior Member
 
Iscritto dal: Mar 2006
Città: Riccione
Messaggi: 1851
Il tuo problema è che argv[2] è una stringa??? se è così allora lo risolvi in scioltezza dichiari una variabile intera e poi usi la funzione atoi() che vuole in ingresso una stringa e la "trasforma" in un intero... spero di aver capito la tua domanda...
__________________
Visitate il mio blog sul mondo FPV:HeavyMachineGun
Per i veri appassionati di Formula1: PassioneF1
Slayer86 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2007, 18:27   #3
albertoparisi
Junior Member
 
Iscritto dal: May 2007
Messaggi: 6
il mio problema è che argv[2] è una stringa perchè deve essere cosi è il percorso da dove iniziare a cercare..il problema sta nel fatto che la find non mi vede il valore di argv[2] e cioe il percorso ma me la vede come la stringa "argv[2]"

grazie

al
albertoparisi è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2007, 18:45   #4
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
invocando la fork stai creando un nuovo PCB.
Dovresti prima di chiamare la fork, copiarti qulle stringa in una variabile globale o usare un qualsiasi altro meccanismo di comunicazione interprocessi.
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2007, 19:01   #5
albertoparisi
Junior Member
 
Iscritto dal: May 2007
Messaggi: 6


..scusa ma non sono ancora molto ferrato in materia programmazione in c come faccio a costruirmi la stringa da passare a execlp??..

grazie per il tuo tempo

Al
albertoparisi è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2007, 19:12   #6
Slayer86
Senior Member
 
Iscritto dal: Mar 2006
Città: Riccione
Messaggi: 1851
Quote:
Originariamente inviato da beppegrillo Guarda i messaggi
invocando la fork stai creando un nuovo PCB.
Dovresti prima di chiamare la fork, copiarti qulle stringa in una variabile globale o usare un qualsiasi altro meccanismo di comunicazione interprocessi.
il figlio creato con la fork dovrebbe avere una copia della memoria del processo padre quindi se crea una variabile di tipo puntatore a char e ci mette la sua stringa il processo figlio dovrebbe vederla senza problemi...
__________________
Visitate il mio blog sul mondo FPV:HeavyMachineGun
Per i veri appassionati di Formula1: PassioneF1
Slayer86 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2007, 19:23   #7
albertoparisi
Junior Member
 
Iscritto dal: May 2007
Messaggi: 6
si ma il problema è che in execlp("sh", "sh", "-c", "find argv[2] -type d >> /users/Al/cercastring/azzo.txt", NULL); argv[2] è preso come stringa e non come il valore che gli do io quando lancio il programma tipo ./nomeprogr asd /users/al/documents ad esempio dovrebbe metterci /users/al/documents e invece me lo considera come la stringa argv[2]
albertoparisi è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2007, 20:00   #8
Slayer86
Senior Member
 
Iscritto dal: Mar 2006
Città: Riccione
Messaggi: 1851
Quote:
Originariamente inviato da albertoparisi Guarda i messaggi
si ma il problema è che in execlp("sh", "sh", "-c", "find argv[2] -type d >> /users/Al/cercastring/azzo.txt", NULL); argv[2] è preso come stringa e non come il valore che gli do io quando lancio il programma tipo ./nomeprogr asd /users/al/documents ad esempio dovrebbe metterci /users/al/documents e invece me lo considera come la stringa argv[2]
perchè find è un comando shell... non credo proprio che tu gli possa passare una variabile relativa al programma nel modo in cui hai fatto tu... così è ovvio che vede argv[2] come stringa passata a find...
__________________
Visitate il mio blog sul mondo FPV:HeavyMachineGun
Per i veri appassionati di Formula1: PassioneF1
Slayer86 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2007, 22:22   #9
albertoparisi
Junior Member
 
Iscritto dal: May 2007
Messaggi: 6
esatto dovrei trovare un modo per poter passare il valore di argv[2] ad un comando shell..secondo te ce un modo per farlo??



Al
albertoparisi è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2007, 23:06   #10
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
Quote:
Originariamente inviato da albertoparisi Guarda i messaggi
execlp("sh", "sh", "-c", "find &argv[2] -type d >> /users/Al/cercastring/azzo.txt", NULL);
scusa.. perchè non fai così?
Quote:
execlp("sh", "sh", "-c", "find", argv[2], "-type d >> /users/Al/cercastring/azzo.txt", NULL);
non sono sicuro che funziona.. comunque puoi sempre usare la libreria string.h per costruirti la stringa con il valore di argv[2] dentro che poi dovrai passare come argomento a execlp.

http://en.wikipedia.org/wiki/String.h
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2007, 13:21   #11
albertoparisi
Junior Member
 
Iscritto dal: May 2007
Messaggi: 6
..bella idea ci ho provato ma purtroppo mi da errore..mi sa che non mi resta che concatenare la stringa..pero anche qui un piccolo problema..

..se faccio..
******************
char *s="find";

strcat(s,argv[2]);
printf("%s\n",s);

mi restituisce l'errore "bus error"..

dove sbaglio?


AL
albertoparisi è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2007, 17:13   #12
Slayer86
Senior Member
 
Iscritto dal: Mar 2006
Città: Riccione
Messaggi: 1851
Quote:
Originariamente inviato da albertoparisi Guarda i messaggi
..bella idea ci ho provato ma purtroppo mi da errore..
bhe non ha senso è semplicemente un parametro passato in più alla execlp...in quel modo non vengono nemmeno concatenate le stringhe...

Quote:
Originariamente inviato da albertoparisi Guarda i messaggi
mi sa che non mi resta che concatenare la stringa..pero anche qui un piccolo problema..

..se faccio..
******************
char *s="find";

strcat(s,argv[2]);
printf("%s\n",s);

mi restituisce l'errore "bus error"..

dove sbaglio?

AL
Aggiungi anche il controllo che ad esguire le nuove istruzioni sia il figlio ovvero dopo aver controllato il successo o meno della fork fa un altro controllo per vedere se il pid è uguale a 0 ,quindi se è il figlio, e gli fai eseguire la execlp poi prova a spatacare con le stringhe purtroppo non ho la possibilità di provarlo e non ho molta esperienza con la concatenazione di stringhe... cmq la tua ultima soluzione mi pare che in caso ti dovrebbe aprire una shell poi ti scrive la stringa e li si ferma non ti apre il file quindi non credo vada bene...
__________________
Visitate il mio blog sul mondo FPV:HeavyMachineGun
Per i veri appassionati di Formula1: PassioneF1
Slayer86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Anthropic ha un'AI che trova falle in Wi...
I 10 migliori sconti Amazon del weekend:...
Con un coupon scendono ancora: le super ...
Minimo storico per Samsung Galaxy S26 Ul...
Si è conclusa la missione lunare ...
EK Waterblock si arrende agli aumenti, i...
Geekbench si aggiorna: tutti i test con ...
Per la prima volta un computer quantisti...
Telecamere Reolink 4K su Amazon: Wi-Fi 6...
Anthropic vuole farsi i chip da sola? Co...
Il fondatore di Framework: il personal c...
JBL Live Flex 3 a 129€ su Amazon: ANC ad...
Come un uomo ha costruito un'azienda da ...
Multe fino a 400 euro anche se hai pagat...
Tapo lancia una valanga di offerte su Am...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v