Forum Linux.général probleme avec setcap

Posté par  . Licence CC By‑SA.
Étiquettes :
0
30
jan.
2023

Bonjour,

j ai un script qui doit pouvoir monter (mount) un disque mais sans etre root.
J'ai donc lancé la commande : sudo setcap 'CAP_SYS_ADMIN=eip' myscript.sh

et quand je fais ./myscript.sh, le terminal me retourne : seul le superutilisateur peut utiliser mount.

pourtant dans man capabilities il me dit bien que je peux faire mount avec setcap 'CAP_SYS_ADMIN=eip'

Avez vous une idée du probleme ?
Merci d avance

Forum Programmation.c++ question sur mon architecture logiciel

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
13
jan.
2023

Bonjour a tous :)

j ai une IHM qui doit afficher deux int32_t venant de mon processus processMain. Dans processMain j ai créé 2 shared memory de cette facon:

int fd = -1;
if( (fd=::shm_open("ma_variable1", O_RDWR | O_CREAT, 0644)) < 0)
{
    std::cout << "shm_open error, " << strerror(errno) << std::endl;
}

size_t sizeOfMy_variable1 = ::sizeof(int32_t);
(…)

Forum Programmation.c probleme pour faire un timer précis de l'ordre de la milliseconde

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
26
jan.
2022

bonjour à tous,
je souhaite faire un timer via timerfd_create qui reveille mon programme toutes les 1 milliseconde (ms). j'aimerais une erreur que de 10% soit pas plus de 1.1ms. Mon programme à un timer moyen de 1ms (super :) ) mais a parfois des piques à 1,2 ms voir 1,4ms :(

Je l'ai passé en fifo priorité 99, j'ai viré toutes les interruptions venant de mon cpu8 afin d'empecher que mon processus soit interrompu (via /proc/irq/smp_affinity), j'ai bien entendu (…)

Forum Programmation.c++ probleme de compréhension sur les rvalue et std::move

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
14
jan.
2022

bonjours à tous,

Dans le code ci-dessous, j'ai l'impression que la lvalue est copié au lieu d'etre déplacé car le pointeur ou se trouve la chaine de caractere "Salut" n'est plus la meme avant et apres le std::move
voici mon code :

std::string str = "Salut";
std::vector<std::string> v;

std::cout << "str.data() = " << (void*)str.data() << "; str.size() = "
(…)

Forum Linux.général /dev/fb0 apparement j'ai pas tout compris

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
4
5
juil.
2021

Bonjour à tous,

j'aimerai en écrivant directement dans /dev/fb0 éteindre mon écran, en realité mettre toutes les leds de mon écran à 0. J'ai donc fait ce code :

    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <string.h>
    #include <errno.h>
    #include <unistd.h>
    #include <sys/mman.h>
    #include <sched.h>
    #include <linux/fb.h>
    #include <sys/ioctl.h>

    int main(int argc, char const *argv[])
    {
        //set scheduler to max priority
        struct sched_param sch_param;
        sch_param.sched_priority = 99;

        if(
(…)

Forum Linux.debian/ubuntu clé usb sans partition est monté par le systeme

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
23
fév.
2021

bonjour à tous,

voila un collegue m'a preté une clée usb qui n'a aucune partition. la commande : ls -l /dev/disk/by-id
montre : /dev/sdb donc aucune partition sur cette clée

pourtant le systeme a réussi à monter la clée USB et je peux acceder aux fichiers contenus dans la clée USB.

Je suis etonné car pour moi un périphérique sans partition ne contient pas de métadata pour gérer le systeme de fichier : pas d'inode, pas de connaissance sur les (…)

Forum Programmation.c++ try catch et sigsegv

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
8
fév.
2021

Bonjour à tous,

voila je m'interroge sur le fonctionne du try catch. Est ce que ca utilise l' appelle systeme sigaction qui permet d'attraper un signal. Si le signal et SIGSEGV alors on saute dans une méthode handler. Puis on retourne à l'instruction suivant apres le try..catch ? Le compilateur C++ gere donc l'implémentation automatique du handler pour attraper le signal sigsegv ?

autre question :
J'ai souvent vu dans certain code assez bien fait (comme Qt) le systeme de (…)

Forum Linux.débutant Récupérer les structures des différents devices dans /dev

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
31
déc.
2020

Bonjour à tous,

voila quand je fais open("/dev/input/mice", O_RDWR)
je récupere bien les infos avec un read mais de quoi est composé le buffer que je récupere. Ou je peux trouver cette information pour la souris, le clavier, la webcam, rtc0 … j'ai regardé dans /usr/include/linux/input.h mais il n'y a rien. Je cherche en gros la structure associé au périphérique de la souris, puis la structure associé au clavier … est ce que c'est regroupé dans un fichier header ???

(…)

Forum Linux.général probleme de compréhension sur les tubes nommés

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
7
août
2020

Bonjour à tous,

via la commande mkfifo j'ai crée un fichier pipe : mkfifo /tmp/myPipeNamed. Puis ensuite à travers deux terminaux j'ai ouvert ce fichier :
cat /tmp/myPipeNamed (sur chaque terminal)

puis via le code :
int main(int argc, char const *argv[])
{

    int pipeNamed_fd = open("/tmp/myPipeNamed", O_WRONLY);

    char buffer[256];
    while(1)
    {        
        write(1,"ecrivez quelque chose : ", 24);
        int byteReceivedFromKeyboard = read(0, buffer, 256);
        buffer[byteReceivedFromKeyboard  - 1] = '\0'; //on remplace le retour chariot \n par \0
        write( pipeNamed_fd, buffer,
(…)

Forum Programmation.c essayer de recupérer l'adresse de retour d'une fonction

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
6
22
juil.
2020

bonjour à tous,

J'essaye de récupérer l'adresse de retour stockée dans la pile puis de faire un jump sur cette adresse afin de revenir à mon main, je vous montre mon code puis vous explique ma démarche :

    int addOne ( int value )
    {
        char * ptr = (char*)&value; // la variable value est situé a RBP-0x14
        void (*adresseDeRetour) (void) = (ptr + 28);
        adresseDeRetour();
(…)

Forum Linux.général comment accéder à ma clé USB à partir du fichier /sys

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
8
juil.
2020

Bonjour à tous,

voila je me suis renseigné un peu sur le service udev et je sais qu'il crée les fichiers /dev/sd* des que le noyau ajoute un nouveau fichier dans /sys/

Donc je peux faire un open("/dev/sdb1", …) mais avec le vrai chemin : open("/sys/",…) et ca ne devrait pas poser de probleme pour le noyau. Mais quand je met ma clée USB, ou se trouve le fichier dans /sys qui fait référence à ma clée usb.

il y (…)

Forum Programmation.c petit probleme avec gdb et la structure pthread_mutex_t

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
25
mai
2020

Bonjour à tous,

voila je me suis fabriqué un petit programme qui fait un deadlock (via 2 threads). puis ensuite avec gdb je regarde à quelle instruction est mon programme (via backtrace), j'ai :

#0  __lll_lock_wait ()
    at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f623ede4023 in __GI___pthread_mutex_lock (
    mutex=0x5571dcb2c040 <mutexDeCosmoff>)
    at ../nptl/pthread_mutex_lock.c:78
#2  0x00005571dc92b89b in callback1 ()
#3  0x00007f623ede16db in start_thread (arg=0x7f623e9e8700)
    at pthread_create.c:463
#4  0x00007f623eb0a88f in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

je constate donc que mon thread est bloqué par le mutex : mutexDeCosmoff (…)

Forum Programmation.c probleme avec le fonctionnement d'un thread

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
13
oct.
2019

bonjour,

voila je vous poste mon code ca sera plus simple pour la suite d'expliquer mon probleme.

    #include <stdio.h>
    #include <stdlib.h>
    #include <pthread.h>
    #include <unistd.h>

    void* f(void * arg)
    {
        int value = *((int*)arg);
        fprintf(stdout, "thread : &value  = %p ; value = %i\n", arg, value);

    }

    int main(int argc, char const *argv[])
    {
        pthread_t t;
(…)

Forum Linux.général que se passe t'il quand je communique avec des socket en localhost

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
17
sept.
2019

Bonjour,

si par exemple l'adresse Ip du serveur sur lequel je veux transmettre un message est 127.0.0.1 avec un port = 60000. Des que j'envoie un message, le noyau va envoyer le message au périphérique de ma carte réseau, puis ensuite celle ci va regarder sur quelle interface elle veut envoyer le message, dans notre cas l'interface réseau est 'lo' car je veux envoyer le message à l'adresse IP 127.0.0.1. Ensuite cette meme interface recoit mon message, elle va vérifier (…)

Forum Linux.général probleme de compréhension sur l'alignement.

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
12
sept.
2019

bonjour à tous,

voila si j'ai

struct A{
    int m_value ;
    char c;
}

struct B{
    int m_value;
    char c;
}__attribute__((packed))

B aura une taille de 5 octets alors que la structure de A aura une taille de 8 octets. Le compilateur rajoute des octets de padding mais pourquoi?

sur un pc 64 bits, le bus de donné et de 128 bits, donc on peut recupérer a chaque coup d'horloge jusqu'a 16 octets de mémoire. Donc si mon processus a (…)