Torna indietro   Hardware Upgrade Forum > Software > Linux, Unix, OS alternativi

Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve
Dopo quasi un mese di utilizzo quotidiano e un viaggio medio-lungo in autostrada, raccontiamo pregi e limiti della Geely EX5: comfort premium, batteria LFP da 60,22 kWh, autonomia fino a 430 km e un prezzo che parte da 38.900 €
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Complete è un robot aspirapolvere che coniuga un'aspirazione potente e un lavaggio con rullo a logica di intelligenza artificiale che guida al meglio nella pulizia di casa: rulli e spazzole estensibili a pulire gli angoli e una base di ricarica che lava e ripristina il robot al emglio delle sue funzionalità dopo ogni azione di pulizia
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Abbiamo provato Google Pixel 11, il più accessibile della nuova gamma: chip Tensor G6 condiviso con i modelli Pro, fotocamera 48 MP con Magic Capture e Stili Fotografici, display Actua da 3000 nit e batteria da 4985 mAh. Ecco come si comporta nell'uso quotidiano, e cosa cambia davvero rispetto a Pixel 11 Pro e Pro XL
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-11-2003, 18:02   #1
Edde
Senior Member
 
Iscritto dal: Oct 2001
Città: Prov. di Frosinone
Messaggi: 948
Programmare in c con Mandrake

Ciao

Mi consigliate un buon programmino, semplice e potente (stile dev c++ per intenderci) con cui programmare in C?

Nei cd della Mandrake 9.1 c'e' una milionata di programmi, e mi sono un po' perso


Ho provato kDevelop, e sarebbe anche un bel programmino se non ti costringesse a creare dei progetti per ogni cosa: ho fatto un programmino semplice per provare i primi comandi sui processi (1,5 kb), e lui mi ha costretto a creare un progetto di decine di file inutili (1,5 mb)....

Ma e' possibile che non si possa fare altrimenti?
Se volessi scrivere il classico "Hello world" sono per forza costretto a sorbirmi l'ingombrantissimo contorno?

Allora ho provato Kate. Certo, non ha le comodita' di kDevelop (e di Dev c++ ...... ahhhh, che gran bel programma.... possibile che non ci sia l'equivalente su Linux?), ma almeno non mi costringe a fare cose che non voglio. Certo, poi devo compilare con gcc, e non e' il massimo della vita (anche perche' non ho ben capito le varie opzioni che offre).

Un altro paio di domande e chiudo

Sotto win quando compilo il file "pippo.c" mi da "pippo.exe", che e' un eseguibile, e che quindi posso provare semplicemente cliccandoci sopra.
In Linux invece mi da "pippo.o"
Qual'e' il comando per eseguirlo?

Questa invece non riguarda linux, ma il c in generale.
Immaginiamo che il main si trovi nel file "main.c"
In "pippo.c" ci sono delle funzioni che ho scritto io, e che vorrei usare in "main.c"
Per far capire questa cosa al compilatore, cosa devo dirgli?

Grazie
Edde è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2003, 18:17   #2
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
se non vuoi interfacce in stile visual c++ basta un editor qualunque (da bluefish a gedit, a kedit, a vi, a emacs) ecc...
il .o è un file oggetto, non è un esegubile (gcc dovrebbe dare un .out alla fine).
il .out si lancia con
./nome.out
che linea usi per gcc?
fossi in te non abbandonerei gcc per nulla al mondo!
tenere due finestre aperte non è poi così impossibile, su una scrivi e sull'altra lanci gcc (il comando tra l'altro ti rimane nell'history, lo puoi richiamare con la freccia su).
per c++ devi usare g++ .
se usi emacs puoi anche compilare nella stessa schermata dell'editor.
se vuooi un buon libro che ti spieghi la programmazione c/c++ su linux lo trovi su www.advancedlinuxprogramming.com
sono dei pdf da scaricare.
nei primi capitoli ti spiega anche come usare gcc.

per l'ultima domanda...
non ho capito se vuoi una cosa tipo

#include "pippo.c"

o se intendi la linea di comando da usare

cc -c main.c -o main.o
cc -c pippo.c -o pippo.o
cc main.o pippo.o -o ciao



ciao
NA01 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2003, 18:37   #3
maxithron
Senior Member
 
L'Avatar di maxithron
 
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
Oltre agli editor che ti ha suggerito NA01 io aggiungerei anche Quanta:
è ottimo dato che ti consente anche di scegliere l'high-light mode a seconda del codice che devi scrivere(c/c++, php,etc...)

Se invece vuoi un ide meno "inglobante" di kdevelop, puoi utilizzare anjuta.
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n;
Utilizzando atomi trivalenti drogheremo il silicio di tipo p;
Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo
maxithron è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2003, 22:20   #4
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
guarda che dev-c++ c'è anche per linux, vai sul sito del produttore e vedrai che c'è, ma non so se si può scaricare, altrimenti lo cerchi in rete.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2003, 22:50   #5
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Editor di testo e linea di comando...niente di meglio per cominciare e capire i meccanismi basilari...
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 06-11-2003, 11:58   #6
Pinocchio
Senior Member
 
L'Avatar di Pinocchio
 
Iscritto dal: Sep 1999
Città: Messina
Messaggi: 1807
Quote:
Originariamente inviato da cn73
Editor di testo e linea di comando...niente di meglio per cominciare e capire i meccanismi basilari...
Già, scusate se mi intrufolo, ma era inutile magari aprire un nuovo 3d.

Posto le mie domande:

1)Sotto Gcc, con quale funzione si pulisce lo schermo e a quale libreria fa riferimento?
2)e per getch() va bene la libreria curses.h o ce ne sono altre?

C i a o.
__________________
with Free Software you have Freedom (Richard Stallman)
Pinocchio è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2003, 14:59   #7
Edde
Senior Member
 
Iscritto dal: Oct 2001
Città: Prov. di Frosinone
Messaggi: 948
Grazie a tutti

Ho optato per Kate (che ti permette anche di compilare senza dover cambiare applicazione, visto che in finestra ti mette la console), e dopo un periodo di assestamento, comincio a trovarmici discretamente bene
Edde è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2003, 18:47   #8
Edde
Senior Member
 
Iscritto dal: Oct 2001
Città: Prov. di Frosinone
Messaggi: 948
Ragazzi, ora ho una domanda di quelle difficili
Sto muovendo i primi passi coi semafori, e ho scritto questo programmino: il classico programma del Produttore-Consumatore.

Il processo padre crea due figli e rimane in attesa.

Il primo chiama la funzione "produttore", che manda un msg a video, prende una stringa dalla tastiera, e la copia in un'area di memoria condivisa.

Il secondo invece chiama la funzione "consumatore", che legge la stringa dalla mem condivisa e la stampa a video.

La cosa si ripete (con un ciclo) fino a quando l'utente non inserisce la stringa "quit".

Chiaramente i due processi non possono accedere contemporaneamente alla memoria, e l'esclusione avviene con i semafori.

Dico subito che c'e' un errore: infatti non c'e' niente che impedisca al consumatore di entrare nell'area critica prima del produttore (e la cosa non dovrebbe accadere).
Il padre genera prima il produttore, che quindi in genere riesce ad accedere alla memoria prima dell'altro, ma e' cmq una soluzione scorretta.

Il problema pero' e' un altro:
il consumatore non riesce ad entrare nell'area critica prima della morte del produttore.

Esempio di esecuzione:

>Inserisci il dato ('quit' per uscire):
pippo
>Inserisci il dato ('quit' per uscire):
pluto
>Inserisci il dato ('quit' per uscire):
quit
>quit

Mentre invece dovrebbe essere:

>Inserisci il dato ('quit' per uscire):
pippo
>pippo
>Inserisci il dato ('quit' per uscire):
pluto
>pluto
>Inserisci il dato ('quit' per uscire):
quit
>quit

Ecco il codice:

---------------------------------------- ------------
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <stdio.h>

/* Produttorre-Consumatore con i semafori */

/* Metodi per le operazioni sul semaforo */

int waitSem(int ds_sem)
{
struct sembuf oper;
oper.sem_num = 0;
oper.sem_op = -1;
oper.sem_flg = 0;

return semop(ds_sem, &oper, 1);
}

int signalSem(int ds_sem)
{
struct sembuf oper;
oper.sem_num = 0;
oper.sem_op = +1;
oper.sem_flg = 0;

return semop(ds_sem, &oper, 1);
}


-----
/* Metodo produttore di dati. Chiede il dato e lo memorizza in memoria condivisa */
void produttore(int ds_mem, int ds_sem)
{
void *indirizzo;
int ret;
char dato[256];


/* Attacco la memoria allo spazio di indirizzamento */
indirizzo = shmat(ds_mem, 0, SHM_W);
if( indirizzo == (void*) -1 ) printf("Errore nella shmat del produttore\n");

/* Produco */

do{
ret = waitSem(ds_sem);
if(ret == -1) printf("Errore nella wait del produttore\n");

printf("Inserisci il dato ('quit' per uscire): \n");
scanf("%s", dato);


/* Inizio area critica */
strcpy(indirizzo, dato);
/* Fine area critica */

ret = signalSem(ds_sem);
if(ret == -1) printf("Errore nella signal del produttore\n");


}while( (strcmp(dato, "quit") != 0) );


exit(0);
}

-----
/* Metodo consumatore. Prende il dato dalla memoria condivisa e lo mette a schermo */
void consumatore(int ds_mem, int ds_sem)
{
void *indirizzo;
char dato[256];
int ret;

/* Attacco la memoria allo spazio di indirizzamento */
indirizzo = shmat(ds_mem, 0, SHM_R);
if( indirizzo == (void*) -1 ) printf("Errore nella shmat del consumatore\n");

/* Consumo */

do{
ret = waitSem(ds_sem);
if(ret == -1) printf("Errore nella wait del consumatore\n");
/* Inizio area critica */
strcpy(dato, indirizzo);
/* Fine area critica */

ret = signalSem(ds_sem);
if(ret == -1) printf("Errore nella signal del consumatore\n");

printf("%s\n", dato);
}while( (strcmp(dato, "quit") != 0) );


exit(0);

}


-----
/* Metodo Main */
int main()
{

int ds_shm, ds_sem, ret, status;
long chiave_shm = 30, chiave_sem = 50;

/* Inizializzo il fottuto semaforo */
ds_sem = semget(chiave_sem, 1, IPC_CREAT | 0666);
if(ds_sem == -1) printf("Errore nella creazione del semaforo\n");

ret = semctl(ds_sem, 0, SETVAL, 1);

/*Inizializzo la memoria condivisa*/
ds_shm = shmget(chiave_shm, 256, IPC_CREAT | 0666);
if( ds_shm == -1 ) printf("Errore nella creazione della memoria\n");

/* Facciamo nascere i due figli */
if(fork() != 0)
{
if(fork() != 0)
{
wait(&status);
wait(&status);
}
else consumatore(ds_shm, ds_sem);
}
else produttore(ds_shm, ds_sem);

/* Elimino la memoria condivisa */
ret = shmctl(ds_shm, IPC_RMID, NULL);
if(ret == -1) printf("Errore nella rimozione della memoria\n");

/* Elimino il fottutissimo semaforo */
ret = semctl(ds_sem, 0, IPC_RMID, 1);
if(ret == -1) printf("Errore nella rimozione del semaforo\n");

} /* Fine del main */
---------------------------------------- ------------

Se avete letto fino a qui, grazie
Se poi potete anche aiutarmi, allora alla prima occasione vi offriro' anche da bere

Grazie
Edde è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2003, 14:54   #9
Pinocchio
Senior Member
 
L'Avatar di Pinocchio
 
Iscritto dal: Sep 1999
Città: Messina
Messaggi: 1807
Quote:
Originariamente inviato da Pinocchio
Già, scusate se mi intrufolo, ma era inutile magari aprire un nuovo 3d.

Posto le mie domande:

1)Sotto Gcc, con quale funzione si pulisce lo schermo e a quale libreria fa riferimento?
2)e per getch() va bene la libreria curses.h o ce ne sono altre?

C i a o.
UP
__________________
with Free Software you have Freedom (Richard Stallman)
Pinocchio è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2003, 14:59   #10
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
non ho ancora letto la parte sui semafori per i processi (sono al cap 4)
se vuoi puoi darci un'occhiata
www.advancedlinuxprogramming.com
credo che tu stia cercando le informazioni del capitolo 5, non essendoci ancora arrivato non ti sò dire altro...
ciao
NA01 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2003, 17:29   #11
sebyweb
Senior Member
 
Iscritto dal: Jan 2003
Città: catania
Messaggi: 707
scusate, ma come si compila direttamente da emacs?
__________________
Ho trattato con: Ciccillover, Bimbubay, Gianni1482, infrty, juky, yottabyte, magnolia, stranamore, sagomaccio, redsnake, lucafao, beppe, mrmic, brizius78, Oaichehai, evilgem, wistonwolf, pechigno, alphacygni, myk980, pedro80.
sebyweb è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2003, 19:16   #12
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
una volta salvato vai su tool->compile
ti compare la linea di comando in fondo e puoi lanciare la compilazione

ciao
NA01 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2003, 19:26   #13
Krakz
Senior Member
 
Iscritto dal: Nov 2002
Messaggi: 173
http://www.scintilla.org/SciTEImage.html

Scite
__________________
powered by Mandrake - You are registered as user #335131 with the Linux Counter
Krakz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Monitor AOC gaming 27" in svendita ...
Super power station da 2048Wh e 2800W in...
Un satellite della Space Force e lo stad...
Il telescopio spaziale Swift torna opera...
S-Transistors sviluppa i transistor a su...
Sostituire gli sviluppatori con l'IA è u...
Robot aspirapolvere usato come telecamer...
Crawler AI fuori controllo: il 98% del t...
PCB dalla Cina venduti come prodotti di ...
"Porca miseria, reader è ADM...
Un nuovo rinvio per Squadron 42, il nuov...
I 'cani robot' di Boston Dynamics in pri...
Volkswagen rilancia il nome Up: la city ...
Privacy: cosa succede quando chiedi i da...
Meta brevetta un interruttore hardware c...
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: 06:41.


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